<

ThemeData のアクセント プロパティは非推奨になりました

まとめ

テーマデータアクセントの色、アクセントの色明るさ、アクセントアイコンテーマとアクセントテキストテーマプロパティは非推奨になりました。

のマテリアルデザイン仕様「アクセント」を指定または使用しなくなりました マテリアルコンポーネントの色。コンポーネントのデフォルト値 色は全体的なテーマから派生します。カラースキーム。 のColorSchemeの二次色現在では通常、代わりに使用されますaccentColorそしてそのon2次色対照的な場合に使用されます 色が必要です。

コンテクスト

これはほんの一部でしたが、マテリアルテーマシステムアップデート計画。

Flutter 1.17 以降、ThemeData のアクセント プロパティ - AccentColor、 AccentColorBrightness、accentIconTheme、accentTextTheme - はありませんでした マテリアル ライブラリで使用されるようになりました。彼らに取って代わられたのは、 テーマへの依存性colorSchemetextTheme長期目標の一環としての特性 材料コンポーネントのデフォルト設定を依存させる ほぼこれら 2 つのプロパティのみを対象としています。

これらの変更の動機は、テーマ システムをより簡単にすることです。 理解して使用してください。すべてのコンポーネントのデフォルトの色は次のとおりです。 コンポーネント自体によって定義され、色に基づいて定義されます。 図式。特定のコンポーネントタイプのデフォルトをオーバーライドできます 次のようなコンポーネント固有のテーマFloatingActionButtonThemeDataまたCheckBoxTheme。以前は、acccessColor のようなプロパティは、 コンポーネントの種類が少数で、一部の状況でのみ発生するため、 それらをオーバーライドすることの影響を理解するのは困難です。

変更内容の説明

ThemeData のアクセントカラー、アクセントカラーの明るさ、アクセントアイコンのテーマ、 AccentTextTheme プロパティは非推奨になりました。 図書館はもうそれらを使用しません。

移行ガイド

アプリケーションテーマ

ThemeData値でアクセントカラーを指定する必要がなくなりました。 AccentColorBrightness、accentIconTheme、またはaccentTextTheme。

マテリアル コンポーネントの外観を設定するには、 先ほどと同様に、配色の二次色を指定します アクセントカラーの代わりに。

移行前のコード:

MaterialApp(
  theme: ThemeData(accentColor: myColor),
  // ...
);

移行後のコード:

final ThemeData theme = ThemeData();
MaterialApp(
  theme: theme.copyWith(
    colorScheme: theme.colorScheme.copyWith(secondary: myColor),
  ),
  //...
)

accentColor

最も近い下位互換性ColorScheme色はColorScheme.secondary。最新の素材に最も近づけるために 設計ガイドラインでは、代わりに ColorScheme.primary を置き換えることができます。 対照的な色が必要な場合は、使用しますColorScheme.onSecondary

テーマの AccentColor を検索するために使用されていたカスタム コンポーネントは、検索できるようになります。 のColorScheme.secondaryその代わり。

移行前のコード:

Color myColor = Theme.of(context).accentColor;

移行後のコード:

Color myColor = Theme.of(context).colorScheme.secondary;

accentColorBrightness

静電気ThemeData.estimateBrightnessForColor()方法を使用できます 任意の色の明るさを計算します。

accentTextTheme

これは白でしたTextStyle暗いテーマの場合は黒 ライトテーマ用の TextStyles。ほとんどの場合、textTheme を使用できます その代わり。一般的な慣用句は、次の 1 つの TextStyle を参照することでした。 テキストスタイルの色のコントラストが保証されているため、accentTextTheme アクセントカラーとの相性もいいです(今ColorScheme.secondaryColor)。 同じ結果を得るには、テキスト スタイルの色を次のように指定します。ColorScheme.onSecondary:

移行前のコード:

TextStyle style = Theme.of(context).accentTextTheme.headline1;

移行後のコード:

final ThemeData theme = Theme.of(context);
TextStyle style = theme.textTheme.headline1.copyWith(
  color: theme.colorScheme.onSecondary,
)

accentIconTheme

このプロパティは、アイコンの色を構成するためにのみ使用されていました。 以内FloatingActionButton。アイコンの設定が可能になりました 直接またはFloatingActionButtonThemeData。見るFloatingActionButton と ThemeData のアクセント プロパティ

タイムライン

リリースされたバージョン: 2.3.0-0.1.pre
安定版リリース: 2.5

参考文献

API ドキュメント:

  • ColorScheme
  • FloatingActionButton
  • FloatingActionButtonThemeData
  • TextStyle
  • TextTheme
  • Theme
  • ThemeData

関連する問題:

  • 問題 #56918

関連する PR:

  • PR #81336

他の: